btc <- getSymbols(Symbols="BTC-CAD", auto.assign=FALSE)
## remove today
btc <- btc[1:nrow(btc)-1,]
summary(btc)
## Index BTC-CAD.Open BTC-CAD.High BTC-CAD.Low
## Min. :2019-09-18 Min. : 6996 Min. : 7439 Min. : 5721
## 1st Qu.:2020-02-20 1st Qu.:11519 1st Qu.:11711 1st Qu.:11314
## Median :2020-07-24 Median :13564 Median :13785 Median :13271
## Mean :2020-07-24 Mean :25072 Mean :25772 Mean :24293
## 3rd Qu.:2020-12-26 3rd Qu.:33748 3rd Qu.:35091 3rd Qu.:33310
## Max. :2021-05-30 Max. :79624 Max. :81446 Max. :77726
## NA's :4 NA's :4 NA's :4
## BTC-CAD.Close BTC-CAD.Volume BTC-CAD.Adjusted
## Min. : 6931 Min. :1.625e+10 Min. : 6931
## 1st Qu.:11519 1st Qu.:2.935e+10 1st Qu.:11519
## Median :13567 Median :4.528e+10 Median :13567
## Mean :25115 Mean :4.983e+10 Mean :25115
## 3rd Qu.:34036 3rd Qu.:6.410e+10 3rd Qu.:34036
## Max. :79598 Max. :4.471e+11 Max. :79598
## NA's :4 NA's :4 NA's :4
## basic chart_Series from quantmod
chart_Series(Cl(btc))
btc45d <- tail(btc, n=45)
summary(btc45d[,1:4])
## Index BTC-CAD.Open BTC-CAD.High BTC-CAD.Low
## Min. :2021-04-16 Min. :41798 Min. :43964 Min. :37107
## 1st Qu.:2021-04-27 1st Qu.:51847 1st Qu.:52563 1st Qu.:45708
## Median :2021-05-08 Median :65519 Median :67812 Median :60980
## Mean :2021-05-08 Mean :61378 Mean :63231 Mean :58138
## 3rd Qu.:2021-05-19 3rd Qu.:69735 3rd Qu.:71450 3rd Qu.:66872
## Max. :2021-05-30 Max. :79368 Max. :79831 Max. :75503
## BTC-CAD.Close
## Min. :41809
## 1st Qu.:49186
## Median :64719
## Mean :60568
## 3rd Qu.:69605
## Max. :77018
chart_Series(btc45d)
eth <- getSymbols(Symbols="ETH-CAD", auto.assign=FALSE)
## remove today - empty
eth <- eth[1:nrow(eth)-1,]
summary(eth)
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2019-09-18 Min. : 154.6 Min. : 164.6 Min. : 132.5
## 1st Qu.:2020-02-20 1st Qu.: 244.7 1st Qu.: 250.9 1st Qu.: 240.3
## Median :2020-07-24 Median : 373.8 Median : 380.5 Median : 350.2
## Mean :2020-07-24 Mean : 883.1 Mean : 919.5 Mean : 842.8
## 3rd Qu.:2020-12-26 3rd Qu.: 843.0 3rd Qu.: 915.9 3rd Qu.: 826.9
## Max. :2021-05-30 Max. :5050.3 Max. :5267.4 Max. :4588.7
## NA's :4 NA's :4 NA's :4
## ETH-CAD.Close ETH-CAD.Volume ETH-CAD.Adjusted
## Min. : 154.9 Min. :6.923e+09 Min. : 154.9
## 1st Qu.: 244.8 1st Qu.:1.258e+10 1st Qu.: 244.8
## Median : 374.6 Median :1.862e+10 Median : 374.6
## Mean : 887.1 Mean :2.393e+10 Mean : 887.1
## 3rd Qu.: 876.6 3rd Qu.:3.010e+10 3rd Qu.: 876.6
## Max. :5043.1 Max. :1.025e+11 Max. :5043.1
## NA's :4 NA's :4 NA's :4
## basic chart_Series from quantmod
chart_Series(Cl(eth))
eth90d <- tail(eth, n=90)
summary(eth90d[,1:4])
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2021-03-02 Min. :1885 Min. :1959 Min. :1841
## 1st Qu.:2021-03-24 1st Qu.:2280 1st Qu.:2349 1st Qu.:2183
## Median :2021-04-15 Median :2730 Median :2922 Median :2583
## Mean :2021-04-15 Mean :2953 Mean :3091 Mean :2794
## 3rd Qu.:2021-05-07 3rd Qu.:3335 3rd Qu.:3488 3rd Qu.:3157
## Max. :2021-05-30 Max. :5050 Max. :5267 Max. :4589
## ETH-CAD.Close
## Min. :1886
## 1st Qu.:2290
## Median :2756
## Mean :2963
## 3rd Qu.:3344
## Max. :5043
chart_Series(eth90d)
eth45d <- tail(eth, n=45)
summary(eth45d[,1:4])
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2021-04-16 Min. :2535 Min. :2849 Min. :2097
## 1st Qu.:2021-04-27 1st Qu.:2948 1st Qu.:3124 1st Qu.:2667
## Median :2021-05-08 Median :3344 Median :3504 Median :3182
## Mean :2021-05-08 Mean :3571 Mean :3767 Mean :3317
## 3rd Qu.:2021-05-19 3rd Qu.:4226 3rd Qu.:4346 3rd Qu.:3952
## Max. :2021-05-30 Max. :5050 Max. :5267 Max. :4589
## ETH-CAD.Close
## Min. :2546
## 1st Qu.:2939
## Median :3358
## Mean :3565
## 3rd Qu.:4229
## Max. :5043
chart_Series(eth45d)
kryptos <- merge(btc, eth, join='outer', fill=NA)
kryptos2017 <- kryptos['2017-01-01/']
chart_Series(kryptos[,c(4,8)])
kryptos_all <- kryptos
kryptos <- kryptos["2017-01-01/"]
chart.Correlation(kryptos[,c(4,10)], histogram=TRUE)
df_kryptos <- as.data.frame(kryptos)
df_kryptos$date <- row.names(df_kryptos)
df_kryptos %>% ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()
df_kryptos <- df_kryptos %>% mutate(
yr=year(date),
mth=month(date)
)
df_kryptos %>% ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(yr)))+geom_point()
Correlations vary by year. Of most relevance in most recent yr correlation.
df_kryptos_2020 <- df_kryptos %>% filter(date>='2020-01-01' & date<='2020-12-31')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(mth)))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point(aes(color=as.factor(mth)))+
geom_smooth(method='lm')
chart.Correlation(df_kryptos_2020[,c(2,3,4,5,8,9,10,11)], histogram=TRUE)
df_kryptos_2021 <- df_kryptos %>% filter(date>='2021-01-01' & date<='2021-12-31')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(mth)))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point(aes(color=as.factor(mth)))+
geom_smooth(method='lm')
df_kryptos_2020 %>% ggplot(aes(x=as.factor(mth), y=BTC.CAD.Close))+geom_boxplot()
df_kryptos_2020 %>% ggplot(aes(x=as.factor(mth), y=ETH.CAD.Close))+geom_boxplot()
kryptos2020 <- kryptos_all["2020-01-01/2020-12-31"]
kryptos2020_btc_ret <- dailyReturn(kryptos2020$BTC.CAD.Close)
dygraph(kryptos2020_btc_ret)
kryptos2020_btc_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2020_btc_ret))
kryptos2020 <- kryptos_all["2020-01-01/2020-12-31"]
kryptos2020_eth_ret <- dailyReturn(kryptos2020$ETH.CAD.Close)
dygraph(kryptos2020_eth_ret)
kryptos2020_eth_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2020_eth_ret))
kryptos2020_ret <- merge(kryptos2020_btc_ret, kryptos2020_eth_ret, join='outer', fill=NA)
dygraph(kryptos2020_ret)
## convert to data frame for scatterplots etc
df_kryptos_2020_ret <- as.data.frame(kryptos2020_ret)
colnames(df_kryptos_2020_ret) <- c("BTC_ret","ETH_ret")
ggplot(df_kryptos_2020_ret, aes(x=BTC_ret, y=ETH_ret))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020_ret %>% ggplot(aes(x=BTC_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2020_ret$BTC_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2020_ret$BTC_ret), color='green')+
geom_vline(xintercept=0-sd(df_kryptos_2020_ret$BTC_ret), color='blue')+
geom_text(aes(label=round(sd(BTC_ret),3)), color='blue',
x=sd(df_kryptos_2020_ret$BTC_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(BTC_ret),3)), color='blue',
x=mean(df_kryptos_2020_ret$BTC_ret), y=100, hjust= -0.2)
df_kryptos_2020_ret %>% ggplot(aes(x=ETH_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2020_ret$ETH_ret), color='blue')+
geom_vline(xintercept=0-sd(df_kryptos_2020_ret$ETH_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2020_ret$ETH_ret), color='green')+
geom_text(aes(label=round(sd(ETH_ret),3)), color='blue',
x=sd(df_kryptos_2020_ret$ETH_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(ETH_ret),3)), color='green',
x=mean(df_kryptos_2020_ret$ETH_ret), y=100, hjust= -0.2)
df_kryptos_2021 %>% ggplot(aes(x=as.factor(mth), y=BTC.CAD.Close))+geom_boxplot()
df_kryptos_2021 %>% ggplot(aes(x=as.factor(mth), y=ETH.CAD.Close))+geom_boxplot()
kryptos2021 <- kryptos_all["2021-01-01/2021-12-31"]
kryptos2021_btc_ret <- dailyReturn(kryptos2021$BTC.CAD.Close)
dygraph(kryptos2021_btc_ret)
kryptos2021_btc_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2021_btc_ret))
kryptos2021 <- kryptos_all["2021-01-01/2021-12-31"]
kryptos2021_eth_ret <- dailyReturn(kryptos2021$ETH.CAD.Close)
dygraph(kryptos2021_eth_ret)
kryptos2021_eth_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2021_eth_ret))
kryptos2021_ret <- merge(kryptos2021_btc_ret, kryptos2021_eth_ret, join='outer', fill=NA)
dygraph(kryptos2021_ret)
## convert to data frame for scatterplots etc
df_kryptos_2021_ret <- as.data.frame(kryptos2021_ret)
colnames(df_kryptos_2021_ret) <- c("BTC_ret","ETH_ret")
ggplot(df_kryptos_2021_ret, aes(x=BTC_ret, y=ETH_ret))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021_ret %>% ggplot(aes(x=BTC_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2021_ret$BTC_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2021_ret$BTC_ret), color='green')+
geom_vline(xintercept=0-sd(df_kryptos_2021_ret$BTC_ret), color='blue')+
geom_text(aes(label=round(sd(BTC_ret),3)), color='blue',
x=sd(df_kryptos_2021_ret$BTC_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(BTC_ret),3)), color='blue',
x=mean(df_kryptos_2021_ret$BTC_ret), y=100, hjust= -0.2)
df_kryptos_2021_ret %>% ggplot(aes(x=ETH_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2021_ret$ETH_ret), color='blue')+
geom_vline(xintercept=0-sd(df_kryptos_2021_ret$ETH_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2021_ret$ETH_ret), color='green')+
geom_text(aes(label=round(sd(ETH_ret),3)), color='blue',
x=sd(df_kryptos_2021_ret$ETH_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(ETH_ret),3)), color='green',
x=mean(df_kryptos_2021_ret$ETH_ret), y=100, hjust= -0.2)
At the end of the day…what matters is what your return is at the end of the day. :)
df_kryptos_2021ytd <- df_kryptos_2021 %>% filter(date==min(date) | date==max(date)) %>% select(date, yr, mth, BTC.CAD.Close, ETH.CAD.Close) %>%
mutate(BTC.CAD.ret=BTC.CAD.Close/lag(BTC.CAD.Close)-1,
ETH.CAD.ret=ETH.CAD.Close/lag(ETH.CAD.Close)-1)
df_kryptos_2021ytd_lg <- df_kryptos_2021ytd %>%
filter(date==max(date)) %>%
select(date, yr, mth, BTC.CAD.ret, ETH.CAD.ret) %>%
pivot_longer(cols=c(4:5),
names_to='coin',
values_to='ytd_return')
df_kryptos_2021ytd_lg %>% ggplot(aes(x=coin, y=ytd_return))+
geom_col()+
scale_y_continuous(labels=percent)
df_kryptos_2021ytd[,c(4:7)]
## BTC.CAD.Close ETH.CAD.Close BTC.CAD.ret ETH.CAD.ret
## 2021-01-01 37393.09 929.7528 NA NA
## 2021-05-30 43094.72 2887.1899 0.1524781 2.105331
ccurrency <- c("BTC-CAD", "ETH-CAD","LTC-CAD","BCH-CAD")
kryptos_multi <- NULL
for(c in ccurrency){
kryptos_multi <- cbind(kryptos_multi,
getSymbols(Symbols=c,
from='2018-01-01', periodicity='daily',
auto.assign = FALSE)[,4])
}
chart.Correlation(kryptos_multi, histogram=TRUE)